package kotlincore.chapt02.val和var的使用规则.var的适用场景

class test {
}

fun main() {
    val list1 = arrayListOf(1,1)
    println(ca1(list1))
    println(ca2(list1))
    println(ca3(list1))
}

fun ca1(list:List<Int>):Int{
    var res = 0
    for(e1 in list){
//        res *=e1
//        res += e1
        res = res *e1 + e1
    }
    return res
}

fun ca2(list:List<Int>):Int{
    fun recurse(listr:List<Int>,res:Int):Int{
        if(listr.size > 0){
            val e1 = listr.first()
            return recurse(listr.drop(1),res * e1 + e1)
        }else
            return res
    }
    return recurse(list,0)
}


fun ca3(list:List<Int>):Int{
    return list.fold(0){res,e1 -> res * e1 + e1 }
}